package com.tea.funct.utils.domain;

import cn.hutool.core.collection.CollUtil;
import com.tea.funct.utils.enums.PosterItemType;
import lombok.Data;

import java.awt.*;
import java.util.List;

/**
 * @PACKAGE_NAME: com.tea.funct.utils.domain
 * @CLASSNAME: Poster
 * @DEACRIPTION: 海报参数
 * @AUTHOR: GuoChen
 * @DATE: 2024/5/29
 * @WEEK: 周三
 **/
@Data
public class Poster {

    // 背景图片
    private String bgUrl;
    // 背景颜色
    private Color bgColor;
    // 宽
    private Integer width;
    // 高
    private Integer height;
    // 海报元素
    private List<PosterItem> items;

    // 初始化构造方法
    public Poster(String bgUrl, Color bgColor, Integer width, Integer height) {
        this.bgUrl = bgUrl; // 背景图片
        this.bgColor = bgColor; // 背景颜色
        this.width = width; // 宽
        this.height = height; // 高
    }

    /**
     * 添加海报元素
     *
     * @param posterItem
     * @return
     */
    public Poster addItems(PosterItem posterItem) { // 海报参数 海报元素
        if (CollUtil.isEmpty(this.items)) { // 集合是否为空 海报元素
            this.items = CollUtil.newArrayList(); // 原始海报 新建一个ArrayList
        }
        this.items.add(posterItem);
        return this;
    }

    /**
     * 构建文本海报元素
     *
     * @param font
     * @param fontColor
     * @param x
     * @param y
     * @param text
     * @return
     */
    public Poster addTextItem(Font font,
                              Color fontColor,
                              Integer x,
                              Integer y,
                              String text) {
        PosterItem posterItem = new PosterItem(); // 海报元素
        posterItem.setType(PosterItemType.TEXT); // 文本 ---》海报元素类型
        posterItem.setFont(font); // 字体
        posterItem.setFontColor(fontColor); // 字体颜色
        posterItem.setX(x); // X轴
        posterItem.setY(y); // Y轴
        posterItem.setText(text); // 文本内容
        addItems(posterItem);
        return this;
    }

    /**
     * 构建图片海报元素
     *
     * @param x
     * @param y
     * @param width
     * @param height
     * @param image
     * @return
     */
    public Poster addImageItem(Integer x,
                               Integer y,
                               Integer width,
                               Integer height,
                               String image) {
        PosterItem posterItem = new PosterItem(); // 海报元素
        posterItem.setType(PosterItemType.IMAGE); // 图片 ---》 海报元素类型
        posterItem.setX(x); // X轴
        posterItem.setY(y); // Y轴
        posterItem.setWidth(width); // 宽
        posterItem.setHeight(height); // 高
        posterItem.setImage(image); // 图片链接
        addItems(posterItem);
        return this;
    }

    /**
     * 构建二维码海报元素
     *
     * @param x
     * @param y
     * @param width
     * @param height
     * @param text
     * @return
     */
    public Poster addQrcodeItem(Integer x,
                                Integer y,
                                Integer width,
                                Integer height,
                                String text) {
        PosterItem posterItem = new PosterItem(); // 海报元素
        posterItem.setType(PosterItemType.QRCODE); // 二维码 ---》 海报元素类型
        posterItem.setX(x); // X轴
        posterItem.setY(y); // Y轴
        posterItem.setWidth(width); // 宽
        posterItem.setHeight(height); // 高
        posterItem.setText(text); // 二维码
        addItems(posterItem);
        return this;
    }
}
